home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / GRAPHICS / TEXTVEC.ZIP / VECTOR.INC < prev   
Encoding:
Text File  |  1995-11-12  |  2.8 KB  |  106 lines

  1. Type
  2.   Vertex = Record
  3.     x, y, z : Longint;
  4.   End;
  5.   VertexList = Array[0..1000] of Vertex;
  6.   PVertexList = ^VertexList;
  7.   Point = Record
  8.     x, y : Integer;
  9.   End;
  10.   PointList = Array[0..1000] of Point;
  11.   PPointList = ^PointList;
  12.   LineDef = Record
  13.     From, Too : Integer;
  14.   End;
  15.   LineList = Array[0..1000] of LineDef;
  16.   PLineList = ^LineList;
  17.   VecRec = Record
  18.     LocalCoords : PVertexList;
  19.     Lines : PLineList;
  20.     NumVerticies : Integer;
  21.     NumLines : Integer;
  22.   End;
  23.  
  24. Var
  25.   NumVerticies, NumLines : Integer;
  26.   LocalCoords, WorldCoords : PVertexList;
  27.   ScreenCoords : PPointList;
  28.   LineDefs : PLineList;
  29.   Vectors : Array[0..3] of VecRec;
  30.  
  31. Procedure LoadVectors(FileName : String);
  32. { load the vector objects }
  33.  
  34. Var
  35.   Diskfile : File;
  36.   Count, Count2 : Integer;
  37.   MaxVert : Integer;
  38.   DOSEOF : Longint;
  39.  
  40. Begin
  41.   MaxVert := 0;
  42.   Assign(Diskfile, Filename);
  43.   Reset(Diskfile, 1);
  44.   For Count := 0 to 3 do
  45.     Begin
  46.       BlockRead(Diskfile, Vectors[Count].NumVerticies, 2);
  47.       BlockRead(Diskfile, Vectors[Count].NumLines, 2);
  48.       If Vectors[Count].NumVerticies > MaxVert
  49.         Then MaxVert := Vectors[Count].NumVerticies;
  50.       GetMem(Vectors[Count].LocalCoords, Vectors[Count].NumVerticies * 12);
  51.       GetMem(Vectors[Count].Lines, Vectors[Count].NumLines * 4);
  52.       BlockRead(Diskfile, Vectors[Count].LocalCoords^, Vectors[Count].NumVerticies * 12);
  53.       BlockRead(Diskfile, Vectors[Count].Lines^, Vectors[Count].NumLines* 4);
  54.     End;
  55.   Close(Diskfile);
  56.   GetMem(WorldCoords, 12 * MaxVert);
  57.   GetMem(ScreenCoords, 4 * MaxVert);
  58. End;
  59.  
  60. Function LoadVectorObject(FileName : String) : Boolean;
  61.  
  62. Var
  63.   Diskfile : File;
  64.   ReadIn : Word;
  65.  
  66. Begin
  67.   Assign(Diskfile, FileName);
  68.   {$I-}
  69.   Reset(Diskfile, 1);
  70.   {$I-}
  71.   If IOResult <> 0
  72.     Then Begin
  73.       LoadVectorObject := False;
  74.       Exit;
  75.     End;
  76.   BlockRead(Diskfile, NumVerticies, Sizeof(NumVerticies), ReadIn);
  77.   If ReadIn <> Sizeof(NumVerticies)
  78.     Then Begin
  79.       LoadVectorObject := False;
  80.       Exit;
  81.     End;
  82.   BlockRead(Diskfile, NumLines, Sizeof(NumLines), ReadIn);
  83.   If ReadIn <> Sizeof(NumLines)
  84.     Then Begin
  85.       LoadVectorObject := False;
  86.       Exit;
  87.     End;
  88.   GetMem(LocalCoords, NumVerticies * Sizeof(Vertex));
  89.   GetMem(WorldCoords, NumVerticies * Sizeof(Vertex));
  90.   GetMem(ScreenCoords, NumVerticies * Sizeof(Point));
  91.   GetMem(LineDefs, NumLines * Sizeof(LineDef));
  92.   BlockRead(Diskfile, LocalCoords^, NumVerticies * Sizeof(Vertex), Readin);
  93.   If ReadIn < (NumVerticies * Sizeof(Vertex))
  94.     Then Begin
  95.       LoadVectorObject := False;
  96.       Exit;
  97.     End;
  98.   BlockRead(Diskfile, LineDefs^, NumLines * Sizeof(LineDef), Readin);
  99.   If ReadIn < (NumLines * Sizeof(LineDef))
  100.     Then Begin
  101.       LoadVectorObject := False;
  102.       Exit;
  103.     End;
  104.   Close(Diskfile);
  105.   LoadVectorObject := True;
  106. End;